
edit:completion:arg-completer[ffsend] = [@words]{
    fn spaces [n]{
        repeat $n ' ' | joins ''
    }
    fn cand [text desc]{
        edit:complex-candidate $text &display-suffix=' '(spaces (- 14 (wcswidth $text)))$desc
    }
    command = 'ffsend'
    for word $words[1:-1] {
        if (has-prefix $word '-') {
            break
        }
        command = $command';'$word
    }
    completions = [
        &'ffsend'= {
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand debug 'View debug information'
            cand delete 'Delete a shared file'
            cand download 'Download files'
            cand exists 'Check whether a remote file exists'
            cand generate 'Generate assets'
            cand info 'Fetch info about a shared file'
            cand parameters 'Change parameters of a shared file'
            cand password 'Change the password of a shared file'
            cand upload 'Upload files'
            cand version 'Determine the Send server version'
            cand history 'View file history'
            cand help 'Prints this message or the help of the given subcommand(s)'
        }
        &'ffsend;debug'= {
            cand -h 'The remote host to upload to'
            cand --host 'The remote host to upload to'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;delete'= {
            cand -o 'Specify the file owner token'
            cand --owner 'Specify the file owner token'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;download'= {
            cand -p 'Unlock a password protected file'
            cand --password 'Unlock a password protected file'
            cand -o 'Output file or directory'
            cand --output 'Output file or directory'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -e 'Extract an archived file'
            cand --extract 'Extract an archived file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;exists'= {
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;generate'= {
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
            cand completions 'Shell completions'
            cand help 'Prints this message or the help of the given subcommand(s)'
        }
        &'ffsend;generate;completions'= {
            cand -o 'Shell completion files output directory'
            cand --output 'Shell completion files output directory'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;generate;help'= {
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;info'= {
            cand -o 'Specify the file owner token'
            cand --owner 'Specify the file owner token'
            cand -p 'Unlock a password protected file'
            cand --password 'Unlock a password protected file'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;parameters'= {
            cand -o 'Specify the file owner token'
            cand --owner 'Specify the file owner token'
            cand -d 'The file download limit'
            cand --download-limit 'The file download limit'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;password'= {
            cand -p 'Specify a password, do not prompt'
            cand --password 'Specify a password, do not prompt'
            cand -o 'Specify the file owner token'
            cand --owner 'Specify the file owner token'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -P 'Protect the file with a generated passphrase'
            cand --gen-passphrase 'Protect the file with a generated passphrase'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;upload'= {
            cand -p 'Protect the file with a password'
            cand --password 'Protect the file with a password'
            cand -d 'The file download limit'
            cand --download-limit 'The file download limit'
            cand -e 'The file expiry time'
            cand --expiry-time 'The file expiry time'
            cand -h 'The remote host to upload to'
            cand --host 'The remote host to upload to'
            cand -n 'Rename the file being uploaded'
            cand --name 'Rename the file being uploaded'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -P 'Protect the file with a generated passphrase'
            cand --gen-passphrase 'Protect the file with a generated passphrase'
            cand -o 'Open the share link in your browser'
            cand --open 'Open the share link in your browser'
            cand -D 'Delete local file after upload'
            cand --delete 'Delete local file after upload'
            cand -a 'Archive the upload in a single file'
            cand --archive 'Archive the upload in a single file'
            cand -c 'Copy the share link to your clipboard'
            cand --copy 'Copy the share link to your clipboard'
            cand -C 'Copy the ffsend download command to your clipboard'
            cand --copy-cmd 'Copy the ffsend download command to your clipboard'
            cand -S 'Shorten share URLs with a public service'
            cand --shorten 'Shorten share URLs with a public service'
            cand -Q 'Print a QR code for the share URL'
            cand --qrcode 'Print a QR code for the share URL'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;version'= {
            cand -h 'The remote host to upload to'
            cand --host 'The remote host to upload to'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;history'= {
            cand -R 'Remove history entry'
            cand --rm 'Remove history entry'
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -C 'Clear all history'
            cand --clear 'Clear all history'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
        &'ffsend;help'= {
            cand -t 'Request timeout (0 to disable)'
            cand --timeout 'Request timeout (0 to disable)'
            cand -T 'Transfer timeout (0 to disable)'
            cand --transfer-timeout 'Transfer timeout (0 to disable)'
            cand -A 'Server API version to use, ''-'' to lookup'
            cand --api 'Server API version to use, ''-'' to lookup'
            cand --basic-auth 'Protected proxy HTTP basic authentication credentials (not FxA)'
            cand -H 'Use the specified history file'
            cand --history 'Use the specified history file'
            cand -h 'Prints help information'
            cand --help 'Prints help information'
            cand -V 'Prints version information'
            cand --version 'Prints version information'
            cand -f 'Force the action, ignore warnings'
            cand --force 'Force the action, ignore warnings'
            cand -I 'Not interactive, do not prompt'
            cand --no-interact 'Not interactive, do not prompt'
            cand -y 'Assume yes for prompts'
            cand --yes 'Assume yes for prompts'
            cand -q 'Produce output suitable for logging and automation'
            cand --quiet 'Produce output suitable for logging and automation'
            cand -v 'Enable verbose information and logging'
            cand --verbose 'Enable verbose information and logging'
            cand -i 'Don''t update local history for actions'
            cand --incognito 'Don''t update local history for actions'
        }
    ]
    $completions[$command]
}
